Skip to content

chore(release): bump to v0.24.0#322

Merged
avrabe merged 1 commit into
mainfrom
release/v0.24.0
Jul 8, 2026
Merged

chore(release): bump to v0.24.0#322
avrabe merged 1 commit into
mainfrom
release/v0.24.0

Conversation

@avrabe

@avrabe avrabe commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Release bump for v0.24.0 — "Structured WIT records + a compiling wit-bindgen component crate" (ships PR #320, closes #319 items 1/3/4/6/7).

Shipped (promoted to verified)

  • REQ-CODEGEN-WIT-RECORDS-001 — structured no_alloc WIT records + compiler-enforced WIT-world⟷Rust-Guest wiring + Dispatch_Protocol-derived lifecycle.
  • REQ-CODEGEN-WIT-RECORDS-002 — the whole generated per-process crate compiles (real Rust types from the same DataShape as the WIT records, relocated + module-wired per-thread components, delegating Guest), builds to wasm32-wasip2, with a sound WIT-level no-alloc oracle. Gated in CI by the new codegen-oracle job.

Bump contents (mirrors the v0.23.0 bump)

  • Cargo.toml workspace version 0.23.0 → 0.24.0; Cargo.lock propagated (spar-* crates only, no external dep changes); vscode-spar/package.json 0.23.0 → 0.24.0.
  • artifacts/requirements.yaml: REQ-CODEGEN-WIT-RECORDS-001/002 → status: verified, release: v0.24.0 (top-level).

Scope / deferrals (unchanged, forward-looking)

  • No-alloc guarantee holds only for all-scalar/record ports (opaque top-level port keeps the list<u8> fallback by design).
  • Deferred: the codegen data plane (port population from imported WIT funcs + persistent state) and REQ-CODEGEN-VERIFY-WORKSPACE-001 (--verify test/build emits inert artifacts). REQ-EMV2-PROPAGATION-003 (binding-path traversal) remains proposed backlog, as it was for v0.23.0.

After merge, a signed annotated v0.24.0 tag on the bump commit triggers the release pipeline.

🤖 Generated with Claude Code

v0.24.0 — "Structured WIT records + a compiling wit-bindgen component crate".
One feature area shipped since v0.23.0 (PR #320, closes #319 items 1/3/4/6/7):

- REQ-CODEGEN-WIT-RECORDS-001 (verified) — spar codegen now emits structured,
  no_alloc-representable WIT from real AADL: a `data implementation` becomes a WIT
  `record` (recursively, dependency-first), scalar fields map to precise WIT
  scalars honouring signedness/float (a non-encodable field is a HARD ERROR, not a
  silent `list<u8>`), `wit_ident` preserves PascalCase word boundaries, each
  thread's `world` exports its `Dispatch_Protocol`-derived lifecycle, and a
  per-process binding crate wires the world to Rust (`generate!` + `impl Guest` +
  `export!`). Because wit-bindgen derives the `Guest` trait from the world, a
  `cargo check` of the emitted crate is a COMPILER-ENFORCED alignment oracle.

- REQ-CODEGEN-WIT-RECORDS-002 (verified) — the WHOLE generated per-process crate
  now compiles: classifier-typed ports resolve to real Rust types (records ->
  structs in a per-crate `types` module derived from the SAME DataShape as the WIT
  records), per-thread files are relocated under the crate and module-wired, and
  the `Guest` delegates to each per-thread component. The no_alloc guarantee has a
  SOUND oracle at the WIT level (`list`/`string` absence) after a probe showed the
  wasm `cabi_realloc` symbol is unconditional wit-bindgen-rt glue that cannot
  discriminate; an opaque-port model is the negative control. The emitted crate
  also builds to wasm32-wasip2. A dedicated `codegen-oracle` CI job runs the
  #[ignore] compile oracles so they actually gate.

Honesty / scope (stated, not footnoted): the no-alloc guarantee holds only for
all-scalar/record ports (an opaque top-level port keeps the `list<u8>` fallback by
design). DEFERRED to successor requirements: the data plane (populating ports from
imported WIT functions + persistent component state — Guest methods are free fns),
and REQ-CODEGEN-VERIFY-WORKSPACE-001 (`spar codegen --verify test/build` still
emits artifacts that are inert in the generated virtual workspace).

Falsification: if a generated `Guest` method name diverges from its WIT world
export, or a record-typed port references an undefined Rust type, the
`codegen-oracle` job fails to compile the emitted crate; if an all-scalar/record
model emits any `list`/`string` in its WIT, the no-alloc oracle fails.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@avrabe avrabe enabled auto-merge (squash) July 8, 2026 21:51
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

Rivet verification gate

20/20 passed

count
Passed 20
Failed 0
Skipped (no steps) 0

Filter: (and (= type "feature") (or (has-tag "v093") (has-tag "v0100")))

Failed artifacts

(none)

Updated automatically by tools/post_verification_comment.py. Source of truth: artifacts/verification.yaml.

@codecov

codecov Bot commented Jul 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit 952cbd4 into main Jul 8, 2026
19 checks passed
@avrabe avrabe deleted the release/v0.24.0 branch July 8, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

friction: WIT/Rust codegen emits opaque list<u8> blobs + disconnected Rust skeleton — no record/enum generation, no wit-bindgen wiring

1 participant